package ru.mirent.entity;

/**
 * Базовый интерфейс для реализации оркестровщика уведомлений.
 */
public interface Observable {
    /**
     * Зарегистрировать слушатель уведомлений.
     * @param observer реалиация слушателя к добавлению
     */
    void registerObserver(Observer observer);

    /**
     * Удалить слушателя уведомлений.
     * @param observer реалиация слушателя к удалению
     */
    void removeObserver(Observer observer);

    /**
     * Отправить уведомление всем слушателям событий.
     */
    void notifyObservers();

    /**
     * Получить имя оркестровщика.
     * @return имя оркестровщика
     */
    String name();
}
